
#include "sequence.h"

/**
 * Busca o proximo id da sequence válido tendo como argumento o nome do arquivo de sequences.
 * @param filename arquivo que contem as sequences.
 * @return o proximo id a ser usado ou NOT_FOUND indicando que nao foi possivel buscar.
 */
int next_sequence(char *filename) {
    FILE *file = NULL;
    unsigned int previous = NOT_FOUND, next = NOT_FOUND;

    file = fopen(filename, "rb+");
    if (file) {
        fread(&previous, sizeof (previous), 1, file);
        rewind(file);
        next = previous + 1;
        fwrite(&next, sizeof (next), 1, file);
        fclose(file);
        return previous;
    } else {
        printf("Aviso: arquivo \"%s\" foi criado.\n", filename);
        /* Não conseguiu abrir um arquivo existente, então, criará. */
        file = fopen(filename, "wb+");
        if (file) {
            next = 2;
            fwrite(&next, sizeof (next), 1, file);
            fclose(file);
            return 1;
        }
    }
    return NOT_FOUND;
}